package com.qi.demo01.Lock8;

import java.util.concurrent.TimeUnit;

/**
 * @author zjq
 * @date 2020/3/25 20:22
 */

/**
 * 一个静态同步方法，一个同步方法，先执行那个？
 */
public class Test3 {
    public static void main(String[] args) throws InterruptedException {
        Phone3 phone3 = new Phone3();
        Phone3 phone31 = new Phone3();
        //两个对象的Class模板只有一个，Static，锁的是class


        new Thread(() -> {
            try {
                phone3.sendSms();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, "A").start();
        TimeUnit.SECONDS.sleep(1);
        new Thread(() -> {
            phone31.call();
        }, "B").start();
    }
}

class Phone3 {
    //静态的同步方法    锁的Class类模板
    public static synchronized void sendSms() throws InterruptedException {
        TimeUnit.SECONDS.sleep(4);
        System.out.println("send");
    }

    //锁的是调用者
    public synchronized void call() {//普通同步方法
        System.out.println("call");
    }
}
